ELBのログをログ監視SaaS Logentriesに登録する
今日はLogentriesでELBのログを監視するために必要な方法を紹介します。
Logentriesとは
Logentriesはログ監視のためのSaaSです。
AWSにはCloudWatch Logsというログの監視サービスがあります。ログを監視して、特定の文字列を検知したら通知する、という一般的なログ監視はCloudWatch Logsでも十分行えます。
一方で、ログの集計を実施したりダッシュボードを作成したりする機能はAWSからは提供されていません。そのため自前でElasticsearch + Kibanaと連携させる等の作りこみが必要になります。
Logentriesでは以下の機能を提供しています。 *1そのため、ノンコーディングで簡単にログのモニタリングを実施することが可能です。
- ダッシュボード
- Live tail(tailコマンドのような感覚でリアルタイムに送られてくるログをチェックする)
- アラート機能
- Slack連携
AWSから出力されるELBのログをLogentriesで監視するための方法が、公式のドキュメントで記載されていましたのでそれを実践してみます。
実践
Logentriesのアカウント取得手順は割愛します。
概要
ELBのログはS3に出力されます。そこからS3 Event NotificationでLambda Functionを起動し、Lambda Function内でログのパースを行った後、TCP通信でLogentriesにログを流し込みます。
Logentriesの設定
Logentriesにログを送信するためには、TCP Tokenを取得することが必要です。これはLogentriesの新しいLogを作成した際に取得できます。
画面左上部から、新しいログの登録を行います。
「Manual」を選択します。その後に、Logsetの登録があるので、Logの表示名を入力したらfinishボタンを押します。
UUIDが画面の下部に表示されます。このUUIDが、TCP経由でログを送り込むためのアクセスキーとなります。あとで使うので控えておきましょう。
ELBのログ出力設定
ELBのログはS3に吐かれるように設定しておきましょう。ELBのManagement Consoleから変更が可能です。
Lambdaの設定
Logentriesが、Lambda用のgitリポジトリを公開しています。それをcloneしてきましょう.
git clone
した後、le_config.py
のlog_token
にLogentriesから出力されたものを記載しておきましょう。
$ git clone [email protected]:logentries/le_lambda.git $ cd le_lambda $ cp le_config.py le_config.py.org # log_tokenにLogentries Tokenを記載する $ vim le_config.py # zipで固める $ zip le_lambda.zip le_lambda.py le_config.py le_certs.pem
zipを作成したら、Lambda Functionを作成します。Management ConsoleからFunctionを作成していきます。Blueprintはs3-get-object-python
を選択します。
次の画面ではS3との連携設定を行います。BucketにはELBのログが出力先バケットを、prefixもELBの設定とあわせておきましょう。
次の画面ではFunctionの実行設定を行います。 まず、先ほど作成したzipをアップロードしましょう。
その次にHandler
にはle_lambda.lambda_handler
と記載します。Role
の部分には、S3 Getができる権限を持ったIAM Roleを設定しましょう。未作成の場合は、ドロップダウンリストの中からS3 Execution Role
を選択することで作成することが可能です。
メモリとタイムアウトは、最初は多めに設定しておきましょう。その後、実行結果を見ながら徐々に適切な値に設定しておくのがベストです。
長かったですが、以上で準備完了です。設定が適切にできていれば、ELBのログがLogentries側から確認できるようになっているはずです!
補足
- ELBのログは5分おき、または60分おきに出力されるため、リアルタイムにアクセスを取得することはできません。
- このブログではELBに限定して書きましたが、CloudFrontやCloudTrailなど、S3にログが吐かれる系のサービスは全て同じ方法でLogentriesに流しこむことが可能です。
まとめ
Logentriesを使い始めてまだ時間は短いですが、とても手軽にログを扱うことができます。TCP経由でのログ登録が可能ですので、エージェントがインストール出来ない環境でも利用することが可能です。今回のような自動的に出力されるタイプの情報も扱うことができるので、汎用性は非常に高いと思います。
今後も引き続きLogentriesの機能を紹介していきます。
脚注
- 一部の機能は利用プランによっては利用できないことがあります ↩